A load balancer (LB) is device (hardware and/or software) for balancing load across a set of two or more entities (e.g., processing units). In some environments, a load balancer balances session traffic across a set of applications (e.g., server applications), each of which runs on a processing unit (e.g., a server computer, a blade server, etc.). In such environments, the load balancer may be referred to as a “server load balancer” (SLB). In many applications, for resiliency purposes, it is desired to have in-place a stand-by LB in case an active LB (i.e., a currently functioning LB) fails. It is known that the stand-by LB can either be a “hot” stand-by or a “cold” stand-by.
When using a hot stand-by SLB it is required that connection data (e.g., a connection table) that is used by the active SLB in balancing session traffic across the server applications be replicated to the hot stand-by SLB prior to the failure of the active SLB. Typically, this replication is accomplished by updating connection data accessible to the hot stand-by SLB each time the connection data maintained by the active SLB is updated. An advantage of using a hot stand-by SLB is that, in case a failure of an active SLB occurs, a switchover to the stand-by SLB occurs and this stand-by SLB would have connection data that is identical to the connection data that was maintained by the active SLB, thereby enabling the stand-by SLB to takeover as active SLB and continue balance traffic for the already established sessions as well as new session.
A problem with using the hot stand-by method is that if both the active SLB and the hot stand-by SLB fail, then the connection data will be lost. Moreover, the hot stand-by method requires that the hot stand-by SLB work in tandem with the active SLB so that the active SLB's connection data can be replicated. Another problem with the hot stand-by method occurs when some event (e.g., power failure, operating system crash, hardware fault) causes the active SLB and a target processing unit (e.g., a processing unit on which a server application runs) to fail at more less the same time. When such a situation arises, the replicated connection data that is used by the stand-by SLB may include invalid information (e.g., information mapping a session to the failed target processing unit). This could cause the hot stand-by SLB to forward traffic to the failed target processing unit, which is undesirable because the traffic will not get processed due to the failure of the target processing unit.
A problem with using a cold stand-by SLB is that there is no replication of the active SLB's connection data, and this means that the cold stand-by SLB can not route traffic corresponding to a session that was established before the active SLB failed.
Additionally, to provide scalability, more than one active SLB may be used. That is, for example, a load balancing system may include a two or more active SLBs and may be configured so that additional active SLBs may be added easily to the load balancing system as the need arises.